<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/freezer.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/freezer.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="k">/* Freezer declarations */</span>
<a name="2" /><span class="True">       2:</span> 
<a name="3" /><span class="True">       3:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_noref.html#_RlJFRVpFUl9IX0lOQ0xVREVEXzA_"><span class="b">FREEZER_H_INCLUDED</span></a>
<a name="4" /><span class="True">       4:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_RlJFRVpFUl9IX0lOQ0xVREVEXzA_"><span class="b">FREEZER_H_INCLUDED</span></a>
<a name="5" /><span class="True">       5:</span> 
<a name="6" /><span class="True">       6:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">debug_locks</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="7" /><span class="True">       7:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">sched</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="8" /><span class="True">       8:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">wait</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="9" /><span class="True">       9:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">atomic</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="10" /><span class="True">      10:</span> 
<a name="11" /><span class="True">      11:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0ZSRUVaRVJfMA__"><span class="b">CONFIG_FREEZER</span></a>
<a name="12" /><span class="True">      12:</span> <span class="m">extern</span> <span class="b">atomic_t</span> <span class="b">system_freezing_cnt</span><span class="f">;</span>    <span class="k">/* nr of freezing conds in effect */</span>
<a name="13" /><span class="True">      13:</span> <span class="m">extern</span> <span class="m">bool</span> <span class="b">pm_freezing</span><span class="f">;</span>        <span class="k">/* PM freezing in effect */</span>
<a name="14" /><span class="True">      14:</span> <span class="m">extern</span> <span class="m">bool</span> <span class="b">pm_nosig_freezing</span><span class="f">;</span>        <span class="k">/* PM nosig freezing in effect */</span>
<a name="15" /><span class="True">      15:</span> 
<a name="16" /><span class="True">      16:</span> <span class="k">/*</span>
<a name="17" /><span class="True">      17:</span> <span class="k"> * Timeout for stopping processes</span>
<a name="18" /><span class="True">      18:</span> <span class="k"> */</span>
<a name="19" /><span class="True">      19:</span> <span class="m">extern</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">freeze_timeout_msecs</span><span class="f">;</span>
<a name="20" /><span class="True">      20:</span> 
<a name="21" /><span class="True">      21:</span> <span class="k">/*</span>
<a name="22" /><span class="True">      22:</span> <span class="k"> * Check if a process has been frozen</span>
<a name="23" /><span class="True">      23:</span> <span class="k"> */</span>
<a name="24" /><span class="True">      24:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">frozen</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">p</span><span class="f">)</span>
<a name="25" /><span class="True">      25:</span> <span class="f">{</span>
<a name="26" /><span class="True">      26:</span>     <span class="m">return</span> <span class="b">p</span><span class="f">-&gt;</span><span class="b">flags</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_UEZfRlJPWkVOXzA_"><span class="b">PF_FROZEN</span></a><span class="f">;</span>
<a name="27" /><span class="True">      27:</span> <span class="f">}</span>
<a name="28" /><span class="True">      28:</span> 
<a name="29" /><span class="True">      29:</span> <span class="m">extern</span> <span class="m">bool</span> <span class="b">freezing_slow_path</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">p</span><span class="f">)</span><span class="f">;</span>
<a name="30" /><span class="True">      30:</span> 
<a name="31" /><span class="True">      31:</span> <span class="k">/*</span>
<a name="32" /><span class="True">      32:</span> <span class="k"> * Check if there is a request to freeze a process</span>
<a name="33" /><span class="True">      33:</span> <span class="k"> */</span>
<a name="34" /><span class="True">      34:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">freezing</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">p</span><span class="f">)</span>
<a name="35" /><span class="True">      35:</span> <span class="f">{</span>
<a name="36" /><span class="True">      36:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_bGlrZWx5XzA_"><span class="b">likely</span></a><span class="f">(</span><span class="f">!</span><span class="b">atomic_read</span><span class="f">(</span><span class="f">&amp;</span><span class="b">system_freezing_cnt</span><span class="f">)</span><span class="f">)</span><span class="f">)</span>
<a name="37" /><span class="True">      37:</span>         <span class="m">return</span> <span class="m">false</span><span class="f">;</span>
<a name="38" /><span class="True">      38:</span>     <span class="m">return</span> <span class="b">freezing_slow_path</span><span class="f">(</span><span class="b">p</span><span class="f">)</span><span class="f">;</span>
<a name="39" /><span class="True">      39:</span> <span class="f">}</span>
<a name="40" /><span class="True">      40:</span> 
<a name="41" /><span class="True">      41:</span> <span class="k">/* Takes and releases task alloc lock using task_lock() */</span>
<a name="42" /><span class="True">      42:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">__thaw_task</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">t</span><span class="f">)</span><span class="f">;</span>
<a name="43" /><span class="True">      43:</span> 
<a name="44" /><span class="True">      44:</span> <span class="m">extern</span> <span class="m">bool</span> <span class="b">__refrigerator</span><span class="f">(</span><span class="m">bool</span> <span class="b">check_kthr_stop</span><span class="f">)</span><span class="f">;</span>
<a name="45" /><span class="True">      45:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">freeze_processes</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="46" /><span class="True">      46:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">freeze_kernel_threads</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="47" /><span class="True">      47:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">thaw_processes</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="48" /><span class="True">      48:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">thaw_kernel_threads</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="49" /><span class="True">      49:</span> 
<a name="50" /><span class="True">      50:</span> <span class="k">/*</span>
<a name="51" /><span class="True">      51:</span> <span class="k"> * DO NOT ADD ANY NEW CALLERS OF THIS FUNCTION</span>
<a name="52" /><span class="True">      52:</span> <span class="k"> * If try_to_freeze causes a lockdep warning it means the caller may deadlock</span>
<a name="53" /><span class="True">      53:</span> <span class="k"> */</span>
<a name="54" /><span class="True">      54:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">try_to_freeze_unsafe</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="55" /><span class="True">      55:</span> <span class="f">{</span>
<a name="56" /><span class="True">      56:</span>     <a href="cpu.c_macros_ref.html#_bWlnaHRfc2xlZXBfMA__"><span class="b">might_sleep</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="57" /><span class="True">      57:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_bGlrZWx5XzA_"><span class="b">likely</span></a><span class="f">(</span><span class="f">!</span><span class="b">freezing</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3VycmVudF8w"><span class="b">current</span></a><span class="f">)</span><span class="f">)</span><span class="f">)</span>
<a name="58" /><span class="True">      58:</span>         <span class="m">return</span> <span class="m">false</span><span class="f">;</span>
<a name="59" /><span class="True">      59:</span>     <span class="m">return</span> <span class="b">__refrigerator</span><span class="f">(</span><span class="m">false</span><span class="f">)</span><span class="f">;</span>
<a name="60" /><span class="True">      60:</span> <span class="f">}</span>
<a name="61" /><span class="True">      61:</span> 
<a name="62" /><span class="True">      62:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">try_to_freeze</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="63" /><span class="True">      63:</span> <span class="f">{</span>
<a name="64" /><span class="True">      64:</span>     <span class="m">if</span> <span class="f">(</span><span class="f">!</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Y3VycmVudF8w"><span class="b">current</span></a><span class="f">-&gt;</span><span class="b">flags</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_UEZfTk9GUkVFWkVfMA__"><span class="b">PF_NOFREEZE</span></a><span class="f">)</span><span class="f">)</span>
<a name="65" /><span class="True">      65:</span>         <span class="b">debug_check_no_locks_held</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="66" /><span class="True">      66:</span>     <span class="m">return</span> <span class="b">try_to_freeze_unsafe</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="67" /><span class="True">      67:</span> <span class="f">}</span>
<a name="68" /><span class="True">      68:</span> 
<a name="69" /><span class="True">      69:</span> <span class="m">extern</span> <span class="m">bool</span> <span class="b">freeze_task</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">p</span><span class="f">)</span><span class="f">;</span>
<a name="70" /><span class="True">      70:</span> <span class="m">extern</span> <span class="m">bool</span> <span class="b">set_freezable</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="71" /><span class="True">      71:</span> 
<a name="72" /><span class="True">      72:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0NHUk9VUF9GUkVFWkVSXzA_"><span class="b">CONFIG_CGROUP_FREEZER</span></a>
<a name="73" /><span class="True">      73:</span> <span class="m">extern</span> <span class="m">bool</span> <span class="b">cgroup_freezing</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">task</span><span class="f">)</span><span class="f">;</span>
<a name="74" /><span class="False">      74:</span> <span class="f">#</span><span class="n">else</span> <span class="k">/* !CONFIG_CGROUP_FREEZER */</span>
<a name="75" /><span class="False">      75:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">cgroup_freezing</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">task</span><span class="f">)</span>
<a name="76" /><span class="False">      76:</span> <span class="f">{</span>
<a name="77" /><span class="False">      77:</span>     <span class="m">return</span> <span class="m">false</span><span class="f">;</span>
<a name="78" /><span class="False">      78:</span> <span class="f">}</span>
<a name="79" /><span class="True">      79:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* !CONFIG_CGROUP_FREEZER */</span>
<a name="80" /><span class="True">      80:</span> 
<a name="81" /><span class="True">      81:</span> <span class="k">/*</span>
<a name="82" /><span class="True">      82:</span> <span class="k"> * The PF_FREEZER_SKIP flag should be set by a vfork parent right before it</span>
<a name="83" /><span class="True">      83:</span> <span class="k"> * calls wait_for_completion(&amp;vfork) and reset right after it returns from this</span>
<a name="84" /><span class="True">      84:</span> <span class="k"> * function.  Next, the parent should call try_to_freeze() to freeze itself</span>
<a name="85" /><span class="True">      85:</span> <span class="k"> * appropriately in case the child has exited before the freezing of tasks is</span>
<a name="86" /><span class="True">      86:</span> <span class="k"> * complete.  However, we don&apos;t want kernel threads to be frozen in unexpected</span>
<a name="87" /><span class="True">      87:</span> <span class="k"> * places, so we allow them to block freeze_processes() instead or to set</span>
<a name="88" /><span class="True">      88:</span> <span class="k"> * PF_NOFREEZE if needed. Fortunately, in the ____call_usermodehelper() case the</span>
<a name="89" /><span class="True">      89:</span> <span class="k"> * parent won&apos;t really block freeze_processes(), since ____call_usermodehelper()</span>
<a name="90" /><span class="True">      90:</span> <span class="k"> * (the child) does a little before exec/exit and it can&apos;t be frozen before</span>
<a name="91" /><span class="True">      91:</span> <span class="k"> * waking up the parent.</span>
<a name="92" /><span class="True">      92:</span> <span class="k"> */</span>
<a name="93" /><span class="True">      93:</span> 
<a name="94" /><span class="True">      94:</span> 
<a name="95" /><span class="True">      95:</span> <span class="k">/**</span>
<a name="96" /><span class="True">      96:</span> <span class="k"> * freezer_do_not_count - tell freezer to ignore %current</span>
<a name="97" /><span class="True">      97:</span> <span class="k"> *</span>
<a name="98" /><span class="True">      98:</span> <span class="k"> * Tell freezers to ignore the current task when determining whether the</span>
<a name="99" /><span class="True">      99:</span> <span class="k"> * target frozen state is reached.  IOW, the current task will be</span>
<a name="100" /><span class="True">     100:</span> <span class="k"> * considered frozen enough by freezers.</span>
<a name="101" /><span class="True">     101:</span> <span class="k"> *</span>
<a name="102" /><span class="True">     102:</span> <span class="k"> * The caller shouldn&apos;t do anything which isn&apos;t allowed for a frozen task</span>
<a name="103" /><span class="True">     103:</span> <span class="k"> * until freezer_cont() is called.  Usually, freezer[_do_not]_count() pair</span>
<a name="104" /><span class="True">     104:</span> <span class="k"> * wrap a scheduling operation and nothing much else.</span>
<a name="105" /><span class="True">     105:</span> <span class="k"> */</span>
<a name="106" /><span class="True">     106:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">freezer_do_not_count</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="107" /><span class="True">     107:</span> <span class="f">{</span>
<a name="108" /><span class="True">     108:</span>     <a href="cpu.c_macros_ref.html#_Y3VycmVudF8w"><span class="b">current</span></a><span class="f">-&gt;</span><span class="b">flags</span> <span class="f">|=</span> <a href="cpu.c_macros_ref.html#_UEZfRlJFRVpFUl9TS0lQXzA_"><span class="b">PF_FREEZER_SKIP</span></a><span class="f">;</span>
<a name="109" /><span class="True">     109:</span> <span class="f">}</span>
<a name="110" /><span class="True">     110:</span> 
<a name="111" /><span class="True">     111:</span> <span class="k">/**</span>
<a name="112" /><span class="True">     112:</span> <span class="k"> * freezer_count - tell freezer to stop ignoring %current</span>
<a name="113" /><span class="True">     113:</span> <span class="k"> *</span>
<a name="114" /><span class="True">     114:</span> <span class="k"> * Undo freezer_do_not_count().  It tells freezers that %current should be</span>
<a name="115" /><span class="True">     115:</span> <span class="k"> * considered again and tries to freeze if freezing condition is already in</span>
<a name="116" /><span class="True">     116:</span> <span class="k"> * effect.</span>
<a name="117" /><span class="True">     117:</span> <span class="k"> */</span>
<a name="118" /><span class="True">     118:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">freezer_count</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="119" /><span class="True">     119:</span> <span class="f">{</span>
<a name="120" /><span class="True">     120:</span>     <a href="cpu.c_macros_ref.html#_Y3VycmVudF8w"><span class="b">current</span></a><span class="f">-&gt;</span><span class="b">flags</span> <span class="f">&amp;=</span> <span class="f">~</span><a href="cpu.c_macros_ref.html#_UEZfRlJFRVpFUl9TS0lQXzA_"><span class="b">PF_FREEZER_SKIP</span></a><span class="f">;</span>
<a name="121" /><span class="True">     121:</span>     <span class="k">/*</span>
<a name="122" /><span class="True">     122:</span> <span class="k">     * If freezing is in progress, the following paired with smp_mb()</span>
<a name="123" /><span class="True">     123:</span> <span class="k">     * in freezer_should_skip() ensures that either we see %true</span>
<a name="124" /><span class="True">     124:</span> <span class="k">     * freezing() or freezer_should_skip() sees !PF_FREEZER_SKIP.</span>
<a name="125" /><span class="True">     125:</span> <span class="k">     */</span>
<a name="126" /><span class="True">     126:</span>     <a href="cpu.c_macros_ref.html#_c21wX21iXzA_"><span class="b">smp_mb</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="127" /><span class="True">     127:</span>     <span class="b">try_to_freeze</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="128" /><span class="True">     128:</span> <span class="f">}</span>
<a name="129" /><span class="True">     129:</span> 
<a name="130" /><span class="True">     130:</span> <span class="k">/* DO NOT ADD ANY NEW CALLERS OF THIS FUNCTION */</span>
<a name="131" /><span class="True">     131:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">freezer_count_unsafe</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="132" /><span class="True">     132:</span> <span class="f">{</span>
<a name="133" /><span class="True">     133:</span>     <a href="cpu.c_macros_ref.html#_Y3VycmVudF8w"><span class="b">current</span></a><span class="f">-&gt;</span><span class="b">flags</span> <span class="f">&amp;=</span> <span class="f">~</span><a href="cpu.c_macros_ref.html#_UEZfRlJFRVpFUl9TS0lQXzA_"><span class="b">PF_FREEZER_SKIP</span></a><span class="f">;</span>
<a name="134" /><span class="True">     134:</span>     <a href="cpu.c_macros_ref.html#_c21wX21iXzA_"><span class="b">smp_mb</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="135" /><span class="True">     135:</span>     <span class="b">try_to_freeze_unsafe</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="136" /><span class="True">     136:</span> <span class="f">}</span>
<a name="137" /><span class="True">     137:</span> 
<a name="138" /><span class="True">     138:</span> <span class="k">/**</span>
<a name="139" /><span class="True">     139:</span> <span class="k"> * freezer_should_skip - whether to skip a task when determining frozen</span>
<a name="140" /><span class="True">     140:</span> <span class="k"> *             state is reached</span>
<a name="141" /><span class="True">     141:</span> <span class="k"> * @p: task in quesion</span>
<a name="142" /><span class="True">     142:</span> <span class="k"> *</span>
<a name="143" /><span class="True">     143:</span> <span class="k"> * This function is used by freezers after establishing %true freezing() to</span>
<a name="144" /><span class="True">     144:</span> <span class="k"> * test whether a task should be skipped when determining the target frozen</span>
<a name="145" /><span class="True">     145:</span> <span class="k"> * state is reached.  IOW, if this function returns %true, @p is considered</span>
<a name="146" /><span class="True">     146:</span> <span class="k"> * frozen enough.</span>
<a name="147" /><span class="True">     147:</span> <span class="k"> */</span>
<a name="148" /><span class="True">     148:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">freezer_should_skip</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">p</span><span class="f">)</span>
<a name="149" /><span class="True">     149:</span> <span class="f">{</span>
<a name="150" /><span class="True">     150:</span>     <span class="k">/*</span>
<a name="151" /><span class="True">     151:</span> <span class="k">     * The following smp_mb() paired with the one in freezer_count()</span>
<a name="152" /><span class="True">     152:</span> <span class="k">     * ensures that either freezer_count() sees %true freezing() or we</span>
<a name="153" /><span class="True">     153:</span> <span class="k">     * see cleared %PF_FREEZER_SKIP and return %false.  This makes it</span>
<a name="154" /><span class="True">     154:</span> <span class="k">     * impossible for a task to slip frozen state testing after</span>
<a name="155" /><span class="True">     155:</span> <span class="k">     * clearing %PF_FREEZER_SKIP.</span>
<a name="156" /><span class="True">     156:</span> <span class="k">     */</span>
<a name="157" /><span class="True">     157:</span>     <a href="cpu.c_macros_ref.html#_c21wX21iXzA_"><span class="b">smp_mb</span></a><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="158" /><span class="True">     158:</span>     <span class="m">return</span> <span class="b">p</span><span class="f">-&gt;</span><span class="b">flags</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_UEZfRlJFRVpFUl9TS0lQXzA_"><span class="b">PF_FREEZER_SKIP</span></a><span class="f">;</span>
<a name="159" /><span class="True">     159:</span> <span class="f">}</span>
<a name="160" /><span class="True">     160:</span> 
<a name="161" /><span class="True">     161:</span> <span class="k">/*</span>
<a name="162" /><span class="True">     162:</span> <span class="k"> * These functions are intended to be used whenever you want allow a sleeping</span>
<a name="163" /><span class="True">     163:</span> <span class="k"> * task to be frozen. Note that neither return any clear indication of</span>
<a name="164" /><span class="True">     164:</span> <span class="k"> * whether a freeze event happened while in this function.</span>
<a name="165" /><span class="True">     165:</span> <span class="k"> */</span>
<a name="166" /><span class="True">     166:</span> 
<a name="167" /><span class="True">     167:</span> <span class="k">/* Like schedule(), but should not block the freezer. */</span>
<a name="168" /><span class="True">     168:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">freezable_schedule</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="169" /><span class="True">     169:</span> <span class="f">{</span>
<a name="170" /><span class="True">     170:</span>     <span class="b">freezer_do_not_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="171" /><span class="True">     171:</span>     <span class="b">schedule</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="172" /><span class="True">     172:</span>     <span class="b">freezer_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="173" /><span class="True">     173:</span> <span class="f">}</span>
<a name="174" /><span class="True">     174:</span> 
<a name="175" /><span class="True">     175:</span> <span class="k">/* DO NOT ADD ANY NEW CALLERS OF THIS FUNCTION */</span>
<a name="176" /><span class="True">     176:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">freezable_schedule_unsafe</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="177" /><span class="True">     177:</span> <span class="f">{</span>
<a name="178" /><span class="True">     178:</span>     <span class="b">freezer_do_not_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="179" /><span class="True">     179:</span>     <span class="b">schedule</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="180" /><span class="True">     180:</span>     <span class="b">freezer_count_unsafe</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="181" /><span class="True">     181:</span> <span class="f">}</span>
<a name="182" /><span class="True">     182:</span> 
<a name="183" /><span class="True">     183:</span> <span class="k">/*</span>
<a name="184" /><span class="True">     184:</span> <span class="k"> * Like freezable_schedule_timeout(), but should not block the freezer.  Do not</span>
<a name="185" /><span class="True">     185:</span> <span class="k"> * call this with locks held.</span>
<a name="186" /><span class="True">     186:</span> <span class="k"> */</span>
<a name="187" /><span class="True">     187:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <span class="b">freezable_schedule_timeout</span><span class="f">(</span><span class="m">long</span> <span class="b">timeout</span><span class="f">)</span>
<a name="188" /><span class="True">     188:</span> <span class="f">{</span>
<a name="189" /><span class="True">     189:</span>     <span class="m">long</span> <span class="b">__retval</span><span class="f">;</span>
<a name="190" /><span class="True">     190:</span>     <span class="b">freezer_do_not_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="191" /><span class="True">     191:</span>     <span class="b">__retval</span> <span class="f">=</span> <span class="b">schedule_timeout</span><span class="f">(</span><span class="b">timeout</span><span class="f">)</span><span class="f">;</span>
<a name="192" /><span class="True">     192:</span>     <span class="b">freezer_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="193" /><span class="True">     193:</span>     <span class="m">return</span> <span class="b">__retval</span><span class="f">;</span>
<a name="194" /><span class="True">     194:</span> <span class="f">}</span>
<a name="195" /><span class="True">     195:</span> 
<a name="196" /><span class="True">     196:</span> <span class="k">/*</span>
<a name="197" /><span class="True">     197:</span> <span class="k"> * Like schedule_timeout_interruptible(), but should not block the freezer.  Do not</span>
<a name="198" /><span class="True">     198:</span> <span class="k"> * call this with locks held.</span>
<a name="199" /><span class="True">     199:</span> <span class="k"> */</span>
<a name="200" /><span class="True">     200:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <span class="b">freezable_schedule_timeout_interruptible</span><span class="f">(</span><span class="m">long</span> <span class="b">timeout</span><span class="f">)</span>
<a name="201" /><span class="True">     201:</span> <span class="f">{</span>
<a name="202" /><span class="True">     202:</span>     <span class="m">long</span> <span class="b">__retval</span><span class="f">;</span>
<a name="203" /><span class="True">     203:</span>     <span class="b">freezer_do_not_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="204" /><span class="True">     204:</span>     <span class="b">__retval</span> <span class="f">=</span> <span class="b">schedule_timeout_interruptible</span><span class="f">(</span><span class="b">timeout</span><span class="f">)</span><span class="f">;</span>
<a name="205" /><span class="True">     205:</span>     <span class="b">freezer_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="206" /><span class="True">     206:</span>     <span class="m">return</span> <span class="b">__retval</span><span class="f">;</span>
<a name="207" /><span class="True">     207:</span> <span class="f">}</span>
<a name="208" /><span class="True">     208:</span> 
<a name="209" /><span class="True">     209:</span> <span class="k">/* Like schedule_timeout_killable(), but should not block the freezer. */</span>
<a name="210" /><span class="True">     210:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <span class="b">freezable_schedule_timeout_killable</span><span class="f">(</span><span class="m">long</span> <span class="b">timeout</span><span class="f">)</span>
<a name="211" /><span class="True">     211:</span> <span class="f">{</span>
<a name="212" /><span class="True">     212:</span>     <span class="m">long</span> <span class="b">__retval</span><span class="f">;</span>
<a name="213" /><span class="True">     213:</span>     <span class="b">freezer_do_not_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="214" /><span class="True">     214:</span>     <span class="b">__retval</span> <span class="f">=</span> <span class="b">schedule_timeout_killable</span><span class="f">(</span><span class="b">timeout</span><span class="f">)</span><span class="f">;</span>
<a name="215" /><span class="True">     215:</span>     <span class="b">freezer_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="216" /><span class="True">     216:</span>     <span class="m">return</span> <span class="b">__retval</span><span class="f">;</span>
<a name="217" /><span class="True">     217:</span> <span class="f">}</span>
<a name="218" /><span class="True">     218:</span> 
<a name="219" /><span class="True">     219:</span> <span class="k">/* DO NOT ADD ANY NEW CALLERS OF THIS FUNCTION */</span>
<a name="220" /><span class="True">     220:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">long</span> <span class="b">freezable_schedule_timeout_killable_unsafe</span><span class="f">(</span><span class="m">long</span> <span class="b">timeout</span><span class="f">)</span>
<a name="221" /><span class="True">     221:</span> <span class="f">{</span>
<a name="222" /><span class="True">     222:</span>     <span class="m">long</span> <span class="b">__retval</span><span class="f">;</span>
<a name="223" /><span class="True">     223:</span>     <span class="b">freezer_do_not_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="224" /><span class="True">     224:</span>     <span class="b">__retval</span> <span class="f">=</span> <span class="b">schedule_timeout_killable</span><span class="f">(</span><span class="b">timeout</span><span class="f">)</span><span class="f">;</span>
<a name="225" /><span class="True">     225:</span>     <span class="b">freezer_count_unsafe</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="226" /><span class="True">     226:</span>     <span class="m">return</span> <span class="b">__retval</span><span class="f">;</span>
<a name="227" /><span class="True">     227:</span> <span class="f">}</span>
<a name="228" /><span class="True">     228:</span> 
<a name="229" /><span class="True">     229:</span> <span class="k">/*</span>
<a name="230" /><span class="True">     230:</span> <span class="k"> * Like schedule_hrtimeout_range(), but should not block the freezer.  Do not</span>
<a name="231" /><span class="True">     231:</span> <span class="k"> * call this with locks held.</span>
<a name="232" /><span class="True">     232:</span> <span class="k"> */</span>
<a name="233" /><span class="True">     233:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">freezable_schedule_hrtimeout_range</span><span class="f">(</span><span class="b">ktime_t</span> <span class="f">*</span><span class="b">expires</span><span class="f">,</span>
<a name="234" /><span class="True">     234:</span>         <span class="m">unsigned</span> <span class="m">long</span> <span class="b">delta</span><span class="f">,</span> <span class="m">const</span> <span class="m">enum</span> <span class="b">hrtimer_mode</span> <span class="b">mode</span><span class="f">)</span>
<a name="235" /><span class="True">     235:</span> <span class="f">{</span>
<a name="236" /><span class="True">     236:</span>     <span class="m">int</span> <span class="b">__retval</span><span class="f">;</span>
<a name="237" /><span class="True">     237:</span>     <span class="b">freezer_do_not_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="238" /><span class="True">     238:</span>     <span class="b">__retval</span> <span class="f">=</span> <span class="b">schedule_hrtimeout_range</span><span class="f">(</span><span class="b">expires</span><span class="f">,</span> <span class="b">delta</span><span class="f">,</span> <span class="b">mode</span><span class="f">)</span><span class="f">;</span>
<a name="239" /><span class="True">     239:</span>     <span class="b">freezer_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="240" /><span class="True">     240:</span>     <span class="m">return</span> <span class="b">__retval</span><span class="f">;</span>
<a name="241" /><span class="True">     241:</span> <span class="f">}</span>
<a name="242" /><span class="True">     242:</span> 
<a name="243" /><span class="True">     243:</span> <span class="k">/*</span>
<a name="244" /><span class="True">     244:</span> <span class="k"> * Freezer-friendly wrappers around wait_event_interruptible(),</span>
<a name="245" /><span class="True">     245:</span> <span class="k"> * wait_event_killable() and wait_event_interruptible_timeout(), originally</span>
<a name="246" /><span class="True">     246:</span> <span class="k"> * defined in &lt;linux/wait.h&gt;</span>
<a name="247" /><span class="True">     247:</span> <span class="k"> */</span>
<a name="248" /><span class="True">     248:</span> 
<a name="249" /><span class="True">     249:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9mcmVlemVraWxsYWJsZV8w"><span class="b">wait_event_freezekillable</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="b">condition</span><span class="f">)</span>            \
<a name="250" /><span class="True">     250:</span> <span class="f">(</span><span class="f">{</span>                                    \
<a name="251" /><span class="True">     251:</span>     <span class="m">int</span> <span class="b">__retval</span><span class="f">;</span>                            \
<a name="252" /><span class="True">     252:</span>     <span class="b">freezer_do_not_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>                        \
<a name="253" /><span class="True">     253:</span>     <span class="b">__retval</span> <span class="f">=</span> <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9raWxsYWJsZV8w"><span class="b">wait_event_killable</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="f">(</span><span class="b">condition</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>        \
<a name="254" /><span class="True">     254:</span>     <span class="b">freezer_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>                        \
<a name="255" /><span class="True">     255:</span>     <span class="b">__retval</span><span class="f">;</span>                            \
<a name="256" /><span class="True">     256:</span> <span class="f">}</span><span class="f">)</span>
<a name="257" /><span class="True">     257:</span> 
<a name="258" /><span class="True">     258:</span> <span class="k">/* DO NOT ADD ANY NEW CALLERS OF THIS FUNCTION */</span>
<a name="259" /><span class="True">     259:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9mcmVlemVraWxsYWJsZV91bnNhZmVfMA__"><span class="b">wait_event_freezekillable_unsafe</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="b">condition</span><span class="f">)</span>            \
<a name="260" /><span class="True">     260:</span> <span class="f">(</span><span class="f">{</span>                                    \
<a name="261" /><span class="True">     261:</span>     <span class="m">int</span> <span class="b">__retval</span><span class="f">;</span>                            \
<a name="262" /><span class="True">     262:</span>     <span class="b">freezer_do_not_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>                        \
<a name="263" /><span class="True">     263:</span>     <span class="b">__retval</span> <span class="f">=</span> <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9raWxsYWJsZV8w"><span class="b">wait_event_killable</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="f">(</span><span class="b">condition</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>        \
<a name="264" /><span class="True">     264:</span>     <span class="b">freezer_count_unsafe</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>                        \
<a name="265" /><span class="True">     265:</span>     <span class="b">__retval</span><span class="f">;</span>                            \
<a name="266" /><span class="True">     266:</span> <span class="f">}</span><span class="f">)</span>
<a name="267" /><span class="True">     267:</span> 
<a name="268" /><span class="True">     268:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9mcmVlemFibGVfMA__"><span class="b">wait_event_freezable</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="b">condition</span><span class="f">)</span>                \
<a name="269" /><span class="True">     269:</span> <span class="f">(</span><span class="f">{</span>                                    \
<a name="270" /><span class="True">     270:</span>     <span class="m">int</span> <span class="b">__retval</span><span class="f">;</span>                            \
<a name="271" /><span class="True">     271:</span>     <span class="b">freezer_do_not_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>                        \
<a name="272" /><span class="True">     272:</span>     <span class="b">__retval</span> <span class="f">=</span> <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlXzA_"><span class="b">wait_event_interruptible</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="f">(</span><span class="b">condition</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>        \
<a name="273" /><span class="True">     273:</span>     <span class="b">freezer_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>                        \
<a name="274" /><span class="True">     274:</span>     <span class="b">__retval</span><span class="f">;</span>                            \
<a name="275" /><span class="True">     275:</span> <span class="f">}</span><span class="f">)</span>
<a name="276" /><span class="True">     276:</span> 
<a name="277" /><span class="True">     277:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9mcmVlemFibGVfdGltZW91dF8w"><span class="b">wait_event_freezable_timeout</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="b">condition</span><span class="f">,</span> <span class="b">timeout</span><span class="f">)</span>        \
<a name="278" /><span class="True">     278:</span> <span class="f">(</span><span class="f">{</span>                                    \
<a name="279" /><span class="True">     279:</span>     <span class="m">long</span> <span class="b">__retval</span> <span class="f">=</span> <span class="b">timeout</span><span class="f">;</span>                    \
<a name="280" /><span class="True">     280:</span>     <span class="b">freezer_do_not_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>                        \
<a name="281" /><span class="True">     281:</span>     <span class="b">__retval</span> <span class="f">=</span> <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXRfMA__"><span class="b">wait_event_interruptible_timeout</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span>    <span class="f">(</span><span class="b">condition</span><span class="f">)</span><span class="f">,</span>    \
<a name="282" /><span class="True">     282:</span>                 <span class="b">__retval</span><span class="f">)</span><span class="f">;</span>                \
<a name="283" /><span class="True">     283:</span>     <span class="b">freezer_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>                        \
<a name="284" /><span class="True">     284:</span>     <span class="b">__retval</span><span class="f">;</span>                            \
<a name="285" /><span class="True">     285:</span> <span class="f">}</span><span class="f">)</span>
<a name="286" /><span class="True">     286:</span> 
<a name="287" /><span class="True">     287:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9mcmVlemFibGVfZXhjbHVzaXZlXzA_"><span class="b">wait_event_freezable_exclusive</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="b">condition</span><span class="f">)</span>            \
<a name="288" /><span class="True">     288:</span> <span class="f">(</span><span class="f">{</span>                                    \
<a name="289" /><span class="True">     289:</span>     <span class="m">int</span> <span class="b">__retval</span><span class="f">;</span>                            \
<a name="290" /><span class="True">     290:</span>     <span class="b">freezer_do_not_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>                        \
<a name="291" /><span class="True">     291:</span>     <span class="b">__retval</span> <span class="f">=</span> <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX2V4Y2x1c2l2ZV8w"><span class="b">wait_event_interruptible_exclusive</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="b">condition</span><span class="f">)</span><span class="f">;</span>    \
<a name="292" /><span class="True">     292:</span>     <span class="b">freezer_count</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>                        \
<a name="293" /><span class="True">     293:</span>     <span class="b">__retval</span><span class="f">;</span>                            \
<a name="294" /><span class="True">     294:</span> <span class="f">}</span><span class="f">)</span>
<a name="295" /><span class="True">     295:</span> 
<a name="296" /><span class="True">     296:</span> 
<a name="297" /><span class="False">     297:</span> <span class="f">#</span><span class="n">else</span> <span class="k">/* !CONFIG_FREEZER */</span>
<a name="298" /><span class="False">     298:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">frozen</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">p</span><span class="f">)</span> <span class="f">{</span> <span class="m">return</span> <span class="m">false</span><span class="f">;</span> <span class="f">}</span>
<a name="299" /><span class="False">     299:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">freezing</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">p</span><span class="f">)</span> <span class="f">{</span> <span class="m">return</span> <span class="m">false</span><span class="f">;</span> <span class="f">}</span>
<a name="300" /><span class="False">     300:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__thaw_task</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">t</span><span class="f">)</span> <span class="f">{</span><span class="f">}</span>
<a name="301" /><span class="False">     301:</span> 
<a name="302" /><span class="False">     302:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">__refrigerator</span><span class="f">(</span><span class="m">bool</span> <span class="b">check_kthr_stop</span><span class="f">)</span> <span class="f">{</span> <span class="m">return</span> <span class="m">false</span><span class="f">;</span> <span class="f">}</span>
<a name="303" /><span class="False">     303:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">freeze_processes</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span> <span class="m">return</span> <span class="f">-</span><a href="cpu.c_macros_ref.html#_RU5PU1lTXzA_"><span class="b">ENOSYS</span></a><span class="f">;</span> <span class="f">}</span>
<a name="304" /><span class="False">     304:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">freeze_kernel_threads</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span> <span class="m">return</span> <span class="f">-</span><a href="cpu.c_macros_ref.html#_RU5PU1lTXzA_"><span class="b">ENOSYS</span></a><span class="f">;</span> <span class="f">}</span>
<a name="305" /><span class="False">     305:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">thaw_processes</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span><span class="f">}</span>
<a name="306" /><span class="False">     306:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">thaw_kernel_threads</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span><span class="f">}</span>
<a name="307" /><span class="False">     307:</span> 
<a name="308" /><span class="False">     308:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">try_to_freeze_nowarn</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span> <span class="m">return</span> <span class="m">false</span><span class="f">;</span> <span class="f">}</span>
<a name="309" /><span class="False">     309:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">try_to_freeze</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span> <span class="m">return</span> <span class="m">false</span><span class="f">;</span> <span class="f">}</span>
<a name="310" /><span class="False">     310:</span> 
<a name="311" /><span class="False">     311:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">freezer_do_not_count</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span><span class="f">}</span>
<a name="312" /><span class="False">     312:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">freezer_count</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span><span class="f">}</span>
<a name="313" /><span class="False">     313:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">freezer_should_skip</span><span class="f">(</span><span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">p</span><span class="f">)</span> <span class="f">{</span> <span class="m">return</span> <span class="c">0</span><span class="f">;</span> <span class="f">}</span>
<a name="314" /><span class="False">     314:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">set_freezable</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span><span class="f">}</span>
<a name="315" /><span class="False">     315:</span> 
<a name="316" /><span class="False">     316:</span> <span class="f">#</span><span class="n">define</span> <span class="b">freezable_schedule</span><span class="f">(</span><span class="f">)</span>  <span class="b">schedule</span><span class="f">(</span><span class="f">)</span>
<a name="317" /><span class="False">     317:</span> 
<a name="318" /><span class="False">     318:</span> <span class="f">#</span><span class="n">define</span> <span class="b">freezable_schedule_unsafe</span><span class="f">(</span><span class="f">)</span>  <span class="b">schedule</span><span class="f">(</span><span class="f">)</span>
<a name="319" /><span class="False">     319:</span> 
<a name="320" /><span class="False">     320:</span> <span class="f">#</span><span class="n">define</span> <span class="b">freezable_schedule_timeout</span><span class="f">(</span><span class="b">timeout</span><span class="f">)</span>  <span class="b">schedule_timeout</span><span class="f">(</span><span class="b">timeout</span><span class="f">)</span>
<a name="321" /><span class="False">     321:</span> 
<a name="322" /><span class="False">     322:</span> <span class="f">#</span><span class="n">define</span> <span class="b">freezable_schedule_timeout_interruptible</span><span class="f">(</span><span class="b">timeout</span><span class="f">)</span>        \
<a name="323" /><span class="False">     323:</span>     <span class="b">schedule_timeout_interruptible</span><span class="f">(</span><span class="b">timeout</span><span class="f">)</span>
<a name="324" /><span class="False">     324:</span> 
<a name="325" /><span class="False">     325:</span> <span class="f">#</span><span class="n">define</span> <span class="b">freezable_schedule_timeout_killable</span><span class="f">(</span><span class="b">timeout</span><span class="f">)</span>            \
<a name="326" /><span class="False">     326:</span>     <span class="b">schedule_timeout_killable</span><span class="f">(</span><span class="b">timeout</span><span class="f">)</span>
<a name="327" /><span class="False">     327:</span> 
<a name="328" /><span class="False">     328:</span> <span class="f">#</span><span class="n">define</span> <span class="b">freezable_schedule_timeout_killable_unsafe</span><span class="f">(</span><span class="b">timeout</span><span class="f">)</span>        \
<a name="329" /><span class="False">     329:</span>     <span class="b">schedule_timeout_killable</span><span class="f">(</span><span class="b">timeout</span><span class="f">)</span>
<a name="330" /><span class="False">     330:</span> 
<a name="331" /><span class="False">     331:</span> <span class="f">#</span><span class="n">define</span> <span class="b">freezable_schedule_hrtimeout_range</span><span class="f">(</span><span class="b">expires</span><span class="f">,</span> <span class="b">delta</span><span class="f">,</span> <span class="b">mode</span><span class="f">)</span>    \
<a name="332" /><span class="False">     332:</span>     <span class="b">schedule_hrtimeout_range</span><span class="f">(</span><span class="b">expires</span><span class="f">,</span> <span class="b">delta</span><span class="f">,</span> <span class="b">mode</span><span class="f">)</span>
<a name="333" /><span class="False">     333:</span> 
<a name="334" /><span class="False">     334:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9mcmVlemFibGVfMA__"><span class="b">wait_event_freezable</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="b">condition</span><span class="f">)</span>                \
<a name="335" /><span class="False">     335:</span>         <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlXzA_"><span class="b">wait_event_interruptible</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="b">condition</span><span class="f">)</span>
<a name="336" /><span class="False">     336:</span> 
<a name="337" /><span class="False">     337:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9mcmVlemFibGVfdGltZW91dF8w"><span class="b">wait_event_freezable_timeout</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="b">condition</span><span class="f">,</span> <span class="b">timeout</span><span class="f">)</span>        \
<a name="338" /><span class="False">     338:</span>         <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXRfMA__"><span class="b">wait_event_interruptible_timeout</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="b">condition</span><span class="f">,</span> <span class="b">timeout</span><span class="f">)</span>
<a name="339" /><span class="False">     339:</span> 
<a name="340" /><span class="False">     340:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9mcmVlemFibGVfZXhjbHVzaXZlXzA_"><span class="b">wait_event_freezable_exclusive</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="b">condition</span><span class="f">)</span>            \
<a name="341" /><span class="False">     341:</span>         <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX2V4Y2x1c2l2ZV8w"><span class="b">wait_event_interruptible_exclusive</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="b">condition</span><span class="f">)</span>
<a name="342" /><span class="False">     342:</span> 
<a name="343" /><span class="False">     343:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9mcmVlemVraWxsYWJsZV8w"><span class="b">wait_event_freezekillable</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="b">condition</span><span class="f">)</span>        \
<a name="344" /><span class="False">     344:</span>         <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9raWxsYWJsZV8w"><span class="b">wait_event_killable</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="b">condition</span><span class="f">)</span>
<a name="345" /><span class="False">     345:</span> 
<a name="346" /><span class="False">     346:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9mcmVlemVraWxsYWJsZV91bnNhZmVfMA__"><span class="b">wait_event_freezekillable_unsafe</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="b">condition</span><span class="f">)</span>            \
<a name="347" /><span class="False">     347:</span>         <a href="cpu.c_macros_noref.html#_d2FpdF9ldmVudF9raWxsYWJsZV8w"><span class="b">wait_event_killable</span></a><span class="f">(</span><span class="b">wq</span><span class="f">,</span> <span class="b">condition</span><span class="f">)</span>
<a name="348" /><span class="False">     348:</span> 
<a name="349" /><span class="True">     349:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* !CONFIG_FREEZER */</span>
<a name="350" /><span class="True">     350:</span> 
<a name="351" /><span class="True">     351:</span> <span class="f">#</span><span class="n">endif</span>    <span class="k">/* FREEZER_H_INCLUDED */</span>
<a name="352" /><span class="True">     352:</span> </pre>
  </body>
</html>
